Перейти к основному содержимому

Встроенные функции и стандартная библиотека Lua

Разработчику Архитектору

Встроенные функции в Lua

Базовые встроенные функции

ФункцияЗначениеПример
assertПроверка условия и генерация ошибки при его нарушенииassert(x > 0, "x должен быть положительным")
collectgarbageУправление сборщиком мусораcollectgarbage("collect")
dofileВыполнение кода из файлаdofile("config.lua")
errorГенерация ошибки с сообщениемerror("Произошла ошибка", 2)
getmetatableПолучение метатаблицы объектаlocal mt = getmetatable(obj)
ipairsСоздание итератора для прохода по индексированным элементам таблицыfor i, v in ipairs(t) do print(v) end
loadЗагрузка строки как функции для выполненияlocal f = load("return 42")
loadfileЗагрузка файла как функции для выполненияlocal f = loadfile("script.lua")
nextПолучение следующей пары ключ-значение из таблицыlocal k, v = next(t, prev_key)
pairsСоздание итератора для прохода по всем элементам таблицыfor k, v in pairs(t) do print(k, v) end
pcallЗащищённый вызов функции с перехватом ошибокlocal ok, result = pcall(func, arg1)
printВывод значений на стандартный выводprint("Привет, мир!")
rawequalПрямое сравнение двух значений без учёта метаметодовlocal eq = rawequal(a, b)
rawgetПрямое получение значения из таблицы без учёта метаметодовlocal v = rawget(t, key)
rawlenПолучение длины таблицы или строки без учёта метаметодовlocal len = rawlen(t)
rawsetПрямая установка значения в таблицу без учёта метаметодовrawset(t, key, value)
requireЗагрузка и выполнение модуляlocal mod = require("mymodule")
selectВыбор и подсчёт аргументов переменной длиныlocal count = select("#", ...)
setmetatableУстановка метатаблицы для объектаsetmetatable(t, mt)
tonumberПреобразование значения в числоlocal num = tonumber("123")
tostringПреобразование значения в строкуlocal str = tostring(42)
typeОпределение типа значенияlocal t = type(x)
xpcallЗащищённый вызов с обработчиком ошибокlocal ok, result = xpcall(func, err_handler)

Функции библиотеки string

ФункцияЗначениеПример
string.byteПолучение кодов символов строкиstring.byte("ABC", 1, 3)
string.charСоздание строки из кодов символовstring.char(65, 66, 67)
string.dumpСериализация функции в бинарную строкуlocal bin = string.dump(func)
string.findПоиск подстроки с возможностью захватаstring.find(s, pattern)
string.formatФорматирование строки по шаблонуstring.format("%d + %d = %d", 2, 2, 4)
string.gmatchСоздание итератора для поиска всех совпаденийfor w in string.gmatch(s, "%w+") do
string.gsubЗамена всех совпадений в строкеstring.gsub(s, pattern, repl)
string.lenПолучение длины строкиstring.len("hello")
string.lowerПреобразование строки в нижний регистрstring.lower("HELLO")
string.matchПоиск первого совпадения по шаблонуstring.match(s, pattern)
string.repПовторение строки заданное количество разstring.rep("a", 5)
string.reverseРазворот строки задом наперёдstring.reverse("hello")
string.subИзвлечение подстрокиstring.sub(s, 1, 5)
string.upperПреобразование строки в верхний регистрstring.upper("hello")

Функции библиотеки table

ФункцияЗначениеПример
table.concatОбъединение элементов таблицы в строкуtable.concat(t, ", ")
table.insertВставка элемента в таблицуtable.insert(t, value)
table.moveПеремещение элементов внутри таблицыtable.move(a, 1, 5, 10, b)
table.packСоздание таблицы из аргументов переменной длиныtable.pack(...)
table.removeУдаление и возврат элемента из таблицыtable.remove(t, index)
table.sortСортировка элементов таблицыtable.sort(t, comp)
table.unpackРаспаковка таблицы в список значенийtable.unpack(t, i, j)

Функции библиотеки math

ФункцияЗначениеПример
math.absАбсолютное значение числаmath.abs(-5)
math.acosАрккосинусmath.acos(0.5)
math.asinАрксинусmath.asin(0.5)
math.atanАрктангенсmath.atan(1)
math.atan2Арктангенс с учётом квадрантаmath.atan2(y, x)
math.ceilОкругление вверх до целогоmath.ceil(3.14)
math.cosКосинусmath.cos(math.pi)
math.degПреобразование радиан в градусыmath.deg(math.pi)
math.expЭкспонентаmath.exp(1)
math.floorОкругление вниз до целогоmath.floor(3.9)
math.fmodОстаток от деления с плавающей точкойmath.fmod(10.5, 3)
math.hugeПредставление положительной бесконечностиif x > math.huge then
math.logНатуральный логарифмmath.log(10)
math.log10Десятичный логарифмmath.log10(100)
math.maxМаксимальное значение из аргументовmath.max(1, 5, 3)
math.minМинимальное значение из аргументовmath.min(1, 5, 3)
math.modfРазделение числа на целую и дробную частиmath.modf(3.14)
math.piМатематическая константа πlocal pi = math.pi
math.powВозведение в степеньmath.pow(2, 10)
math.radПреобразование градусов в радианыmath.rad(180)
math.randomГенерация псевдослучайного числаmath.random(1, 100)
math.randomseedУстановка начального значения генератора случайных чиселmath.randomseed(os.time())
math.sinСинусmath.sin(0)
math.sqrtКвадратный кореньmath.sqrt(16)
math.tanТангенсmath.tan(math.pi / 4)
math.tointegerПреобразование в целое числоmath.tointeger(3.0)
math.typeПолучение типа числаmath.type(3.14)
math.ultСравнение целых чисел без знакаmath.ult(a, b)

Функции библиотеки os

ФункцияЗначениеПример
os.clockПолучение времени процессора в секундахlocal start = os.clock()
os.dateФорматирование даты и времениos.date("%Y-%m-%d %H:%M:%S")
os.difftimeВычисление разницы между двумя временными меткамиos.difftime(t2, t1)
os.executeВыполнение системной командыos.execute("dir")
os.exitНемедленное завершение программыos.exit(0)
os.getenvПолучение значения переменной окруженияos.getenv("PATH")
os.removeУдаление файла или директорииos.remove("file.txt")
os.renameПереименование файла или директорииos.rename("old.txt", "new.txt")
os.setlocaleУстановка локали для программыos.setlocale("en_US.UTF-8")
os.timeПолучение текущего времени или преобразование таблицы времениos.time()
os.tmpnameГенерация имени временного файлаlocal tmp = os.tmpname()

Функции библиотеки io

ФункцияЗначениеПример
io.closeЗакрытие файлаio.close(file)
io.flushСброс буфера выводаio.flush()
io.inputУстановка или получение текущего файла вводаio.input("input.txt")
io.linesСоздание итератора для чтения строк из файлаfor line in io.lines("file.txt") do
io.openОткрытие файла с указанным режимомlocal f = io.open("file.txt", "r")
io.outputУстановка или получение текущего файла выводаio.output("output.txt")
io.popenОткрытие процесса для чтения или записиio.popen("ls -la")
io.readЧтение данных из текущего файла вводаlocal data = io.read("*all")
io.stderrСтандартный поток ошибокio.stderr:write("Ошибка")
io.stdinСтандартный поток вводаlocal input = io.stdin:read()
io.stdoutСтандартный поток выводаio.stdout:write("Вывод")
io.tmpfileСоздание временного файлаlocal tmp = io.tmpfile()
io.typeПроверка типа объекта файлаio.type(file)
io.writeЗапись данных в текущий файл выводаio.write("Данные")

Функции библиотеки debug

ФункцияЗначениеПример
debug.debugВход в интерактивный режим отладкиdebug.debug()
debug.gethookПолучение текущего хука отладкиlocal hook = debug.gethook()
debug.getinfoПолучение информации о функцииdebug.getinfo(1, "n")
debug.getlocalПолучение имени и значения локальной переменнойdebug.getlocal(1, 1)
debug.getmetatableПолучение метатаблицы без вызова метаметодаdebug.getmetatable(obj)
debug.getregistryПолучение реестра отладкиdebug.getregistry()
debug.getupvalueПолучение имени и значения апвэльюdebug.getupvalue(func, 1)
debug.sethookУстановка хука отладкиdebug.sethook(hook_func, "cr")
debug.setlocalУстановка значения локальной переменнойdebug.setlocal(1, 1, value)
debug.setmetatableУстановка метатаблицы без вызова метаметодаdebug.setmetatable(obj, mt)
debug.setupvalueУстановка значения апвэльюdebug.setupvalue(func, 1, value)
debug.tracebackПолучение трассировки стека вызововdebug.traceback()
debug.upvalueidПолучение уникального идентификатора апвэльюdebug.upvalueid(func, 1)
debug.upvaluejoinПривязка апвэлью одной функции к другойdebug.upvaluejoin(f1, 1, f2, 2)

Функции библиотеки coroutine

ФункцияЗначениеПример
coroutine.createСоздание новой корутиныlocal co = coroutine.create(func)
coroutine.isyieldableПроверка возможности вызова yieldcoroutine.isyieldable()
coroutine.resumeВозобновление выполнения корутиныcoroutine.resume(co)
coroutine.runningПолучение текущей выполняющейся корутиныcoroutine.running()
coroutine.statusПолучение статуса корутиныcoroutine.status(co)
coroutine.wrapСоздание функции-обёртки для корутиныlocal f = coroutine.wrap(func)
coroutine.yieldПриостановка выполнения корутиныcoroutine.yield(value)

Функции библиотеки package

ФункцияЗначениеПример
package.configСтрока конфигурации пути для загрузки модулейprint(package.config)
package.cpathПуть для поиска бинарных модулейpackage.cpath
package.loadedТаблица загруженных модулейpackage.loaded["module"]
package.loadlibЗагрузка бинарной библиотекиpackage.loadlib(libpath, funcname)
package.pathПуть для поиска модулей на языке Luapackage.path
package.preloadТаблица функций предзагрузки модулейpackage.preload["module"]
package.searchersСписок функций-поисковиков модулейpackage.searchers
package.searchpathПоиск модуля по указанному путиpackage.searchpath(name, path)

Функции библиотеки utf8

ФункцияЗначениеПример
utf8.charСоздание строки из кодовых точек UTF-8utf8.char(0x41, 0x42)
utf8.charpatternШаблон для поиска символов UTF-8string.match(s, utf8.charpattern)
utf8.codesСоздание итератора для кодовых точек строкиfor p, c in utf8.codes(s) do
utf8.codepointПолучение кодовых точек из строкиutf8.codepoint(s, 1, 3)
utf8.lenПолучение длины строки в символах UTF-8utf8.len("Привет")
utf8.offsetПолучение позиции байта для заданного символаutf8.offset(s, 3)

Специальные значения и константы

ФункцияЗначениеПример
_GГлобальная таблица окружения_G.print("Привет")
_VERSIONВерсия интерпретатора Luaprint(_VERSION)
nilОтсутствие значенияlocal x = nil
trueЛогическое значение истинаlocal flag = true
falseЛогическое значение ложьlocal flag = false
...Переменное количество аргументовfunction f(...) end

Метаметоды таблиц

МетаметодЗначениеПример
__indexОбработка доступа к отсутствующему ключуmt.__index = function(t, k)
__newindexОбработка присваивания отсутствующему ключуmt.__newindex = function(t, k, v)
__callВызов таблицы как функцииmt.__call = function(t, ...)
__metatableЗащита метатаблицы от измененияmt.__metatable = "защищено"
__modeУстановка режима слабых ссылокmt.__mode = "k"
__lenОпределение длины таблицыmt.__len = function(t)
__pairsИзменение поведения pairsmt.__pairs = function(t)
__ipairsИзменение поведения ipairsmt.__ipairs = function(t)
__tostringПреобразование таблицы в строкуmt.__tostring = function(t)
__concatКонкатенация таблицmt.__concat = function(t1, t2)
__unmУнарный минусmt.__unm = function(t)
__addОператор сложенияmt.__add = function(t1, t2)
__subОператор вычитанияmt.__sub = function(t1, t2)
__mulОператор умноженияmt.__mul = function(t1, t2)
__divОператор деленияmt.__div = function(t1, t2)
__modОператор взятия остаткаmt.__mod = function(t1, t2)
__powОператор возведения в степеньmt.__pow = function(t1, t2)
__eqОператор сравнения на равенствоmt.__eq = function(t1, t2)
__ltОператор меньшеmt.__lt = function(t1, t2)
__leОператор меньше или равноmt.__le = function(t1, t2)
__bandПобитовое Иmt.__band = function(t1, t2)
__borПобитовое ИЛИmt.__bor = function(t1, t2)
__bxorПобитовое исключающее ИЛИmt.__bxor = function(t1, t2)
__bnotПобитовое НЕmt.__bnot = function(t)
__shlПобитовый сдвиг влевоmt.__shl = function(t1, t2)
__shrПобитовый сдвиг вправоmt.__shr = function(t1, t2)